VGA接口时序以及FPGA实现

您所在的位置:网站首页 vga接口 1080 VGA接口时序以及FPGA实现

VGA接口时序以及FPGA实现

2024-07-06 21:15| 来源: 网络整理| 查看: 265

开发平台:vivado 2020.1 芯片:xc7k410tffv900-2

文章目录 一、引言二、显示原理以及时序三、FPGA实现

一、引言

  VGA (Video Graphics Array)视频图形阵列是BM 于1987 年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用 VGA 标准输出数据的专用接口。VGA 接口共有15 针,分成3 排,每排5个孔,早期在显卡上应用最为广泛的接口类型。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。如图所示:

在这里插入图片描述 每个管脚具体的作用如下:

红基色 red绿基色 green蓝基色 blue地址码 ID Bit自测试( 各家定义不同 )红接地绿接地蓝接地保留 ( 各家定义不同 )数字接地地址码地址码行同步场同步地址码 二、显示原理以及时序

  VGA 显示关键的是三个颜色,即红基色、绿基色和蓝基色,就是我们物理课上常说的三原色。 在这里插入图片描述

  VGA 的显示效果取决于RGB 三个分量的位数(即:色深),最高24位(即RGB各8位),16位(即R5位,G6位,B6位),12位(即RGB各4位) 。色深越高能显示的颜色就越多,显示图片越鲜艳,现在主流的手机和电脑显示器都是8bit色深和10bit色深。

RGB信号在使用时的位宽有三种常见格式,具体跟显示器的设置有关: 1.RGB332,即R: G: B = 3: 3: 2 2. RGB565,即R: G: B = 5: 6: 5 3. RGB888,即R: G: B = 8: 8: 8 (ps:本次显示器支持的是RGB888)

所以想要正确的显示图像,只需要在显示器每个像素点上给出正确的RGB数值,就能达到想要的显示效果。

  显示器能显示的原理是根据电子束扫描的方式:逐行扫描是扫描从屏幕左上角第一点开始,从左至右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT 对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场同步信号进行帧同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。 在这里插入图片描述

  那么我要显示一个19201080的画面,那只需要扫描19201080次吗? 因为根据显示器扫描原理可知道,电子束每扫描一行或者一帧后,都需要时间进行消隐(我个人的理解就是电子束需要时间重置位置),所以实际上的扫描次数大于1920*1080次,时序图如下: 在这里插入图片描述

sync是同步信号长度,hsync为行同步信号,vsync就为场同步信号backporch是后沿消隐长度active video 就是实际的显示画面长度front porch 是前沿消隐长度

  其中,vsync是由hsync组成: 在这里插入图片描述   所以一幅图像在显示器真实的情况是这样: 在这里插入图片描述   不同分辨率的不同参数不同,大致分辨率表如下:

显示模式时钟/Mhz行同步hsync行后沿行有效行前沿行总共场同步vsync场后沿场有效场前沿场总共640×[email protected]×600@60Hz401288880040105642360016281024×768@60Hz65136160102424134462976838061280×[email protected]×1024@60Hz10811224812804816883381024110661920×[email protected]×2160@60Hz59488296384019644001072216082250

  时钟怎么算的呢?比如1920×1080@60hz的时钟=2200×1125×60=148.5M,其他的同理。

三、FPGA实现

  本次显示RGB888,1920×1080@60Hz的纯色绿画面,所以外部输入时钟为148.5M。

//显示纯绿色图片 module vga_ctrl ( input clk , //输入148.5M时钟 output reg vs , //输出vsync信号 output reg hs , //输出hsynv信号 output reg [23:0] data //输出RGB数据,共24位 ); parameter hcnt_max=2200; //行扫描计数器等于行同步+行前沿+行有效+场后沿 parameter vcnt_max=1125; //列扫描计数器等于场同步+场前沿+场有效+场后沿 parameter H_SYNC_TIME =44; //行同步信号时间 parameter H_BACK_PORCH =148; //行消隐后沿时间 parameter H_ACTIVE =1920; //行数据有效时间 parameter H_FRONT_PORCH =88; //行前沿时间 parameter V_SYNC_TIME =5; //场同步信号时间 parameter V_BACK_PORCH =36; //场后沿时间 parameter V_ACTIVE =1080; //场数据有效时间 parameter V_FRONT_PORCH =4 ; //场前沿时间 reg [12:0] hcnt ='d0 ;//行计数器 reg [12:0] vcnt ='d0 ;//列计数器 //对行扫描进行计数 always @(posedge clk)begin if(hcnt == hcnt_max - 1 ) hcnt


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3